/**
 * 订阅/发布
 */
class EventHub {
  constructor() {
    this.hub = Object.create(null);
  }
  emit(event, data) {
    (this.hub[event] || []).forEach(handler => handler(data));
  }
  on(event, handler) {
    if (!this.hub[event]) {
      this.hub[event] = [];
    }
    this.hub[event].push(handler);
  }
  off(event, handler) {
    const i = (this.hub[event] || []).findIndex(h => h === handler);
    if (i > -1) this.hub[event].splice(i, 1);
  }
}

const hub = new EventHub();
export default hub;

// 事件名称
export const TIMEOUT = "timeout"; //网络超时
export const SERVICE_EXCEPTION = "service-exception"; //服务器异常
